'use strict'

const { Controller } = require('egg')

class HomeController extends Controller {
  // 获取错误信息列表
  async index() {
    const { ctx, service } = this
    await ctx.isLogin()
    ctx.body = await service.error.list()
  }

  // 创建错误信息
  async create() {
    const { ctx, service } = this
    await ctx.isLogin()
    ctx.body = await service.error.create()
  }

  // 更新错误信息
  async update() {
    const { ctx, service } = this
    await ctx.validateId()
    const error = await service.error.update()
    if (!error) {
      ctx.throw(404, 'not found', '错误信息不存在')
    }
    ctx.body = error
  }

  // 删除错误信息
  async destroy() {
    const { ctx, service } = this
    await ctx.isLogin()
    await ctx.validateId()
    const error = await ctx.model.Error.findById(ctx.params.id)
    if (!error) {
      ctx.throw(404, 'not found', '对象不存在')
    }
    if (error.user.toString() !== ctx.user._id.toString() && !ctx.user.isAdmin) {
      ctx.throw(403, 'not permission', '无权删除')
    }
    ctx.body = await error.remove()
  }
}

module.exports = HomeController
